//package org.aerie.forest.extensions.base.rebar.processer.config;
//
//import java.io.File;
//import java.util.List;
//
//import org.aerie.forest.core.brick.exception.custom.ForestException;
//import org.aerie.forest.core.frame.rebar.entity.processer.ForestProcessor;
//import org.aerie.forest.core.frame.rebar.factory.ForestFactory;
//import org.aerie.forest.extensions.base._shelf.ForestBaseShelf;
//import org.aerie.forest.extensions.base.rebar.processer.config.container.ForestConfig;
//
///**
// * @description forest配置处理器【1.默认先加载自定义配置文件;2.默认先加载properties配置文件】
// *
// * @author quark
// * @organization aerie
// * @date 2020年2月28日 上午11:26:48
// * @version 1.2.0
// */
//public final class ConfigProcessor extends ForestProcessor {
//
//	/**
//	 * @description 配置路径【打成jar的路径】
//	 * 
//	 * @author quark
//	 * @date 2020年2月28日 上午11:27:22
//	 */
//	private static final String CONFIG_PATH = "forestConfig/";
//
//	/**
//	 * @description 配置路径【自定义配置的路径】
//	 * 
//	 * @author quark
//	 * @date 2020年2月28日 上午11:27:36
//	 */
//	private static final String CUSTOM_CONFIG_PATH = "src/main/resources/forestConfig/";
//
//	/**
//	 * @description 配置文件【yaml】
//	 * 
//	 * @author quark
//	 * @date 2020年2月28日 上午11:27:45
//	 */
//	private static final String DEFAULT_CONFIG_PATH_YAML = "forest.yml";
//
//	/**
//	 * @description 配置容器
//	 * 
//	 * @author quark
//	 * @date 2020年2月28日 上午11:27:54
//	 */
//	private ForestConfig forestConfig = new ForestConfig();
//
//	/**
//	 * @description 单例
//	 * 
//	 * @author quark
//	 * @date 2020年2月28日 上午11:28:03
//	 */
//	private static volatile ConfigProcessor configProcessor;
//
//	/**
//	 * Construction
//	 * 
//	 *
//	 * @date 2020年2月28日 上午11:28:12
//	 */
//	private ConfigProcessor() {
//		super("配置容器处理器");
//		if (singletonFlag) {
//			throw new RuntimeException(forestRebarName + "受到反射攻击");
//		}
//		singletonFlag = true;
//		LOGGER.info(LogMsgPool.INIT_COMPLETE + forestRebarName);
//	}
//
//	/**
//	 * 
//	 * @description 获得forest配置处理器单例
//	 * @return forest配置处理器
//	 * @date 2019年10月19日 下午2:57:27
//	 */
//	static ConfigProcessor getInstance() {
//		/**
//		 * 双重锁
//		 */
//		if (configProcessor == null) {
//			synchronized (ConfigProcessor.class) {
//				if (configProcessor == null) {
//					configProcessor = new ConfigProcessor();
//				}
//			}
//		}
//		return configProcessor;
//	}
//
//	/**
//	 * @description 获得forest环境容器
//	 * @return forest环境容器
//	 *
//	 * @date 2020年2月28日 上午11:28:27
//	 */
//	public ForestConfig getForestConfig() {
//		return forestConfig;
//	}
//
//	/**
//	 * 
//	 * @description 加载配置文件【将forest配置处理器和异常处理器解耦，同时解决初始化互相调用的问题，这里的下载的异常需要自处理】
//	 * @date 2019年10月19日 下午2:59:59
//	 */
//	public void loadConfig() {
//		// 加载配置文件【流加载】
//		try {
//			ForestConfig forestConfigToCheck = (ForestConfig) (ForestFactory.INSTANCE
//					.getForestRebarFactory(ForestBaseShelf.getInstance().FILE_TOOL))
//							.analyzeYamlByClass(this.getClass().getClassLoader()
//									.getResourceAsStream(CONFIG_PATH + DEFAULT_CONFIG_PATH_YAML), ForestConfig.class);
//			List<String> fieldsNameIsNull = forestConfigToCheck.getFieldsNameIsNull();
//			if (fieldsNameIsNull != null && !fieldsNameIsNull.isEmpty()) {
//				throw new ForestException(fieldsNameIsNull.toString() + "这些配置文件的属性为空") {
//
//					/**
//					 * @description 序列化编号
//					 * 
//					 * @author quark
//					 * @date 2020年2月28日 上午11:40:09
//					 */
//					private static final long serialVersionUID = 1L;
//				};
//			}
//			// 校验成功后再加载
//			this.forestConfig = forestConfigToCheck;
//			LOGGER.info("加载配置文件成功");
//		} catch (Exception e) {
//			System.err.println("\n解析异常：— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —"
//					+ " — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —"
//					+ "— — — — — — — — ############");
//			LOGGER.error("forest配置处理器初始化失败");
//			System.err.println("-->cause by:");
//			LOGGER.error(e.getMessage());
//			// yaml配置加载出错
//			File file = new File(CUSTOM_CONFIG_PATH + DEFAULT_CONFIG_PATH_YAML);
//			// 存在自定义配置文件的话
//			if (file.exists()) {
//				LOGGER.debug(DEFAULT_CONFIG_PATH_YAML + "配置文件不准确");
//				// 将自定义配置文件重命名
//				if (!file.renameTo(new File(CUSTOM_CONFIG_PATH + "forestErr.yml"))) {
//					System.err.println("自定义配置文件重命名失败");
//					return;
//				}
//				LOGGER.info("加载依赖默认配置文件");
//				// 重新加载配置文件
//				loadConfig();
//			} else {
//				System.err.println("异常解析完毕：— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —"
//						+ " — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —"
//						+ "— — — — — — — — ############\n");
//				LOGGER.error("forest依赖崩溃");
//				// 影响整个系统的运行程序退出
//				System.exit(0);
//			}
//			System.err.println("异常解析完毕：— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —"
//					+ " — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —"
//					+ "— — — — — — — — ############\n");
//		}
//	}
//}
